﻿<?php
require_once('User.php');
require_once('UserView.php');

/*
* UserManager.
*
* Gestor del sistema para los usuarios.
*/
class UserManager {

	private $system = null;
	
	// Objeto que tiene los métodos para mostrar los datos de usuario
	private $view = null;

	public function __construct(&$system) {
		$this->system = $system;
		$this->view = new UserView();
	}
	
	/*
	 * Comprueba si existe un usuario con un nick dado.
	 * @param string $name
	 * @return boolean true si existe el usuario, false en caso contrario.
	 */
	public function exists($username) {
		return $this->system->database->userDatabase->exists($username);
	}
	
	/*
	 * Añade un usuario nuevo a la tabla users de la base de datos.
	 * @param User $user
	 * @return boolean false si se ha producido 
	 *   un error en la inserción, true en caso contrario.
	 */
	public function register($user) {
		return $this->system->database->userDatabase->insertUser($user);
	}
	
	public function removeUser($user) {
	
	}
	
	public function modifyUser($oldUser, $newUser) {
	
	}

	/*
	 * Crea una sesion para el usuario dado y comprueba que el password es correcto.
	 * @param string $name
	 * @param string $password
	 * @return boolean true si se ha creado la sesion, false en caso contrario.
	 */
	public function login($name, $password) {
		// Se envía la consulta a la base de datos para comprobar que el usuario y la contraseña sean correctos
		$user = $this->system->database->userDatabase->checkLogin($name, $password);
		
		if ($user != null) {
			// Se guarda la información en las variables de sesión
			@session_start();
			
			$_SESSION['id'] = $user->id;
			$_SESSION['name'] = $user->name;
			return true;
		}
		else 
			return false;
	}
	
	/*
	 * Cierra la sesion del usuario.
	 */
	public function logout() {
		// Se destruyen las variables de sesión
		@session_start();
		@session_destroy();
	}
	
	/*
	 * Comprueba si hay una sesion abierta.
	 * @return boolean true si existe la sesion, false en caso contrario.
	 */
	public function logged() {
		@session_start();
		return isset($_SESSION['id']);
	}
	
	/*
	 * Muestra el contenido del div del usuario diferenciando si tiene una 
		sesion iniciada o no y si esta iniciando sesion o no.
	 * @param string $logging
	 */
	public function showUserDiv($logging) {
		if ($this->logged()) {
			$this->system->userManager->showUserLoggedDiv();
		}
		else {
			if ($logging) {
				echo 'Wrong login info';
			}
			$this->system->userManager->showLoginDiv();
		}
	}
	
	/*
	 * Muestra el contenido del div de usuario para iniciar sesion.
	 */
	private function showLoginDiv() {
		echo $this->view->getLoginDiv();
	}
	
	/*
	 * Muestra el contenido del div de usuario una vez iniciada sesion.
	 */
	private function showUserLoggedDiv() {
		echo $this->view->getUserLoggedDiv($_SESSION['name']);
	}
}
?>